Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.10.2021, 07:44
Новичок на форуме
Отправить личное сообщение для mikasa_ackerman Посмотреть профиль Найти все сообщения от mikasa_ackerman
 
Регистрация: 04.10.2021
Сообщений: 2

fetch(). Ответ с Unicode Character. Не получается "декодировать"
Здравствуйте.

Делаю запрос к серверу (не мой) используя fetch().
Вот так вот получаю ответ:
Код:
await response.text();
В ответе содержатся: вкрапления jQuery + html верстка + полезная информация о фильме. В ответе (латиница и кириллица, которая представлена символами Unicode Character. Небольшой кусочек \u0417\u0430\u043a\u0440\u044b\u0442\u044c)

присваиваю ответ переменной, чтобы распарсить информацию с помощью jQuery и здесь начинаются проблемы, потому что js не воспринимает символы \uXXX.

пробовал
Код:
decodeURIComponent(await response.text());
JSON.parse(await response.text());
также получал ответ как response.arrayBuffer() и далее использовал TextDecoder(), но всё безуспешно.

при этом, если вручную присвоить переменной значение "\u0417\u0430\u043a\u0440\u044b\u0442\u044c" и вывести эту переменную через alert(), то все нормально, текст отображается корректно ("Закрыть").

подозреваю что проблема в том, как fetch() предоставляет ответ.

Последний раз редактировалось mikasa_ackerman, 04.10.2021 в 07:48.
Ответить с цитированием
  #2 (permalink)  
Старый 04.10.2021, 07:55
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 457

Сообщение от mikasa_ackerman
распарсить информацию с помощью jQuery
Что это значит приведите пример?
Ответить с цитированием
  #3 (permalink)  
Старый 04.10.2021, 08:01
Новичок на форуме
Отправить личное сообщение для mikasa_ackerman Посмотреть профиль Найти все сообщения от mikasa_ackerman
 
Регистрация: 04.10.2021
Сообщений: 2

Сообщение от Rise Посмотреть сообщение
Что это значит приведите пример?
пример
Код:
$(await response.text()).find('font').first().text();
Ответить с цитированием
  #4 (permalink)  
Старый 04.10.2021, 10:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,598

Проблема в том как сервер шлёт ответ. Пусть нормальный utf-8 шлёт, без бессмысленого и неудобного оверхеда на экранирование.

Почему работает "\u0417\u0430\u043a\u0440\u044b\u0442\u044c"? Потому что кода ты делаешь так: var a = "\u0417\u0430\u043a\u0440\u044b\u0442\u044c"; преобразование спецсимволов происходит на ходу и в a лежит уже просто Закрыть - без кавычек и экранирования. По сути кавычки - это тоже что-то типа "оператора" языка.

Когда же в ты делаешь так: var a = await response.text() в a лежит то, что пришло от сервера без какой либо обработки, и если там есть экранирование оно там и остаётся.
__________________
29375, 35

Последний раз редактировалось Aetae, 04.10.2021 в 10:53.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3447 03.07.2023 09:47
Как вытащить ответ из Fetch JStudent Общие вопросы Javascript 2 25.01.2019 13:48
Google Chrome обмен сообщениями. Артист Общие вопросы Javascript 1 05.01.2017 05:27